package com.yuelao.yuelao_backend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuelao.yuelao_backend.entity.SystemMessage;
import com.yuelao.yuelao_backend.enums.SystemMessageType;

import java.util.List;
import java.util.Map;

/**
 * 系统消息Service
 */
public interface SystemMessageService extends IService<SystemMessage> {

    /**
     * 获取用户的系统消息列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 系统消息列表
     */
    List<SystemMessage> getUserMessages(Long userId, int page, int size);

    /**
     * 标记消息为已读
     * @param messageId 消息ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean markAsRead(Long messageId, Long userId);

    /**
     * 标记所有消息为已读
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean markAllAsRead(Long userId);

    /**
     * 获取未读消息数量
     * @param userId 用户ID
     * @return 未读数量
     */
    long getUnreadCount(Long userId);

    /**
     * 按消息类型获取未读消息数量
     * @param userId 用户ID
     * @param type 消息类型
     * @return 未读数量
     */
    long getUnreadCountByType(Long userId, String type);

    /**
     * 创建系统消息
     * @param userId 接收用户ID
     * @param type 消息类型
     * @param title 标题
     * @param content 内容
     * @param extraData 额外数据
     * @return 是否成功
     */
    boolean createMessage(Long userId, SystemMessageType type, String title, String content, Map<String, Object> extraData);
}

